Procedural surface representations in computer graphics can be orders of magnitude smaller than polygonal or patch-based surface representations, which may be a desirable feature for memory constrained devices like game consoles and cell phones. Compactness is increasingly important because of some current trends in computer hardware. For instance, core processing speed has been increasing much faster than off chip memory bandwidth, so fetching data from memory is steadily becoming more expensive relative to computation. A compact representation can be faster to render than a larger one, even if much more computation is required to process the compact representation. Because of their compactness, procedural models would seem to be a better fit to this trend than polygon meshes or polynomial surfaces.
Constructive Solid Geometry (CSG) is a method of modeling procedural graphical surfaces, whereby more complex surfaces are modeled as a combination of simpler surfaces. For instance, in computer graphics, CSG methods provide a powerful way for defining surfaces of higher genus (e.g., a sphere with a hole) from surfaces of lower genus, such as a plain cylinder and plain sphere. CSG components, including primitives such as cylinders and spheres, can be described in terms of a procedure or a function that accepts some number of parameters. For instance, a spherical three-dimensional (3D) surface can be defined procedurally in terms of coordinates of its center and a value of its radius. More complex objects can then be modeled through CSG operations performed using such procedural objects. Virtually any manufactured object may be modeled using CSG operations in combination with surfaces of revolution and generalized extrusions, both of which are easily programmed procedurally. Also, the addition of CSG operations to procedural surfaces dramatically increases the scope of objects that can be modeled procedurally.
Defining parametric procedural surfaces of genus 0 (e.g., a sphere) and some surfaces of genus 1 (e.g., a torus) is usually straightforward since complexities, such as holes in the surface domain, are typically absent. However, for surfaces of higher genus, it is much more difficult since domains of some parametric surfaces may have holes whose boundaries are, in some sense, only implicitly defined (e.g., as an intersection of surfaces). These boundaries are difficult to program manually.
For instance, CSG operations may require computing and representing curves of intersection between the two or more surfaces being operated upon. These curves, in general, are defined only implicitly as the solution to an equation of the form f(x1, . . . , xn)=0. These equations are not easy to evaluate and typically require a sophisticated, slow, and computationally costly global zero finding solver. A more compact, exact, and resolution independent representation of such curves on the other hand may be efficiently evaluated at runtime on a graphics processing unit (GPU). Such representation may be a highly desirable feature for memory constrained devices, like game consoles or for bandwidth constrained applications. Also, such representations make it possible to represent high genus surfaces in an entirely procedural way at a significantly reduced memory cost while not significantly increasing the computational costs required for rendering such surfaces to be displayed.
Nevertheless it is desirable to have the opportunity to have a trade-off between reducing memory and bandwidth consumption and increasing computational costs. This will continue to hold true, at least so long as the trend of increasing computation capability of processors continues.